#ifndef STUDENT_T_H
#define STUDENT_T_H

#include <string>
#include "Observer.h"

using namespace std;

class Student_tImpl;
class Subject;

class Student_t : public Observer {
// Student_t is an interface used for bridge design pattern, since it's supposed to be separated from its implementations.
// It's also an observer, since it gets notifications from the university.
public:
	~Student_t();
	Student_t(Subject * s, const string& Impl, const long & id );
    void	Update(Subject*,const string &,const string &);
	virtual void tell();

	int getId() const;
protected:
	Student_tImpl*  m_Student_t;
private:
	Student_t(Student_t & other_student);
};

#endif